<!DOCTYPE HTML>
<html>
<head>
<title>#IfTimeout | AutoHotkey</title>
<meta name="description" content="The #IfTimeout directive sets the maximum time that may be spent evaluating a single #If expression." />
<meta name="ahk:equiv-v2" content="commands/_HotIfTimeout.htm" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>


<h1>#IfTimeout <span class="ver">[AHK_L 8+]</span></h1>

<p>设置计算单个 <a href="_If.htm">#If</a> 表达式可以使用的最大时间.</p>

<pre class="Syntax"><span class="func">#IfTimeout</span> Timeout</pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>Timeout</dt>
  <dd><p>全局有效的超时时间值, 单位为毫秒(ms).</p></dd>

</dl>

<h2 id="Remarks">备注</h2>
<p>设置超时时间是为了防止表达式计算时间过长从而延迟了键盘输入. 如果超过了设定的超时时间值, 表达式会继续计算, 但键盘钩子将假定表达式结果为假而继续执行.</p>
<p>如果脚本中未使用此指令, 那么程序会默认设置为 1000 ms.</p>
<p id="LowLevelHooksTimeout">注意系统使用它自己的超时时间. 系统超时时间值定义为 DWORD 类型值 <em>LowLevelHooksTimeout</em>, 并保存在下列的注册表键中:</p>
<p><b>HKEY_CURRENT_USER\Control Panel\Desktop</b></p>
<p>如果超过了系统的超时时间, 那么系统可能会停止调用脚本的键盘钩子, 从而防止钩子热键在重新注册或脚本<a href="Reload.htm">重新加载</a>前停止工作. 钩子<em>通常</em>会在热键<a href="Suspend.htm">挂起</a>或恢复挂起的过程中重新注册.</p>
<p>微软的文档中关于超时的细节是不清楚的, 但是研究表明 Windows 7 和更高版本的情况是这样的: 如果没有定义 <em>LowLevelHooksTimeout</em>, 默认的超时时间是 300 ms. 钩子超时可以长到 10 倍, 但是如果它超时第 11 次, 则会被无声地移除.</p>
<p>如果某个热键具有多个 #If 变体的指令, 超时也许会独立地应用到每个变体, 更有可能导致超时时间被超过. 这种情况可能会在以后的版本中进行修改.</p>
<p>和其他指令一样, #IfTimeout 不能有条件地执行.</p>
<h2 id="Related">相关</h2>
<p><a href="_If.htm">#If</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a class="ex_number" href="#ExBasic"></a> 将 #If 超时设置为 10 ms, 而不是 1000 ms.</p>
<pre>#IfTimeout 10</pre>
</div>

</body>
</html>